﻿namespace WMS6.Services
{
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.ServiceModel;
    using WMS6.Common;
    using WMS6.DataEntity;
    using WMS6.QueryEntity;

    [ServiceContract(Namespace="WMS6.Services")]
    public interface IBillingService
    {
        [FaultContract(typeof(FaultDetail)), OperationContract]
        string BillingBackUp(string ExecuteDate);
        [OperationContract, FaultContract(typeof(FaultDetail))]
        string BillingClosingStock(string ExecuteDate, List<string> dataBaseID);
        [OperationContract, FaultContract(typeof(FaultDetail))]
        string BillingOperating(string ExecuteDate, List<string> dataBaseID);
        [OperationContract, FaultContract(typeof(FaultDetail))]
        string DeleteAccessorialCharges(List<string> accessorialChargesIDS, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail))]
        string DeleteStatement(List<string> IDS, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), OperationContract]
        string DeleteStatementDetail(string StatementID, List<string> IDS, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(AccessorialChargesOrderInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        AccessorialChargesOrderInfo GetAccessorialChargesByID(string orderID, string accessorialType, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(AccessorialChargesQueryEntity)), FaultContract(typeof(FaultDetail))]
        DataSet GetAccessorialChargesByQueryList(AccessorialChargesQueryEntity AccessorialChargesQueryEntity, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail))]
        DataSet GetAllAccessorialCharges(PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail))]
        DataSet GetAllInvoice(PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), OperationContract]
        DataSet GetAllStatement(PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(InvoiceInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        InvoiceInfo GetInvoiceByID(string InvoiceID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(InvoiceQueryEntity)), FaultContract(typeof(FaultDetail))]
        DataSet GetInvoiceByQueryList(InvoiceQueryEntity InvoiceQueryEntity, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(StatementInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        StatementInfo GetStatementByID(string orderID, PubParasInfo pubParasInfo);
        [FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(StatementQueryEntity)), OperationContract]
        DataSet GetStatementByQueryList(StatementQueryEntity StatementQueryEntity, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(StatementDetailInfo))]
        StatementDetailInfo GetStatementDetailInfoByID(string statementID, string LineID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(AccessorialChargesInfo)), FaultContract(typeof(FaultDetail))]
        string InsertAccessorialCharges(AccessorialChargesInfo accessorialChargesInfo, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(InvoiceInfo))]
        string InsertInvoice(InvoiceInfo invoiceInfo, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(StatementInfo)), FaultContract(typeof(FaultDetail))]
        string InsertStatement(StatementInfo statementInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(AccessorialChargesInfo)), OperationContract, FaultContract(typeof(FaultDetail))]
        string UpdateAccessorialCharges(AccessorialChargesInfo accessorialChargesInfo, PubParasInfo pubParasInfo);
        [OperationContract, FaultContract(typeof(FaultDetail)), ServiceKnownType(typeof(StatementInfo))]
        string UpdateStatement(StatementInfo statementInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(StatementDetailInfo)), FaultContract(typeof(FaultDetail)), OperationContract]
        string UpdateStatementDetailReceived(StatementDetailInfo obj, PubParasInfo pubParasInfo);
    }
}

